libtest: On failure, make it clearer what has happened
authorSimon McVittie <smcv@collabora.com>
Sun, 18 Apr 2021 11:16:45 +0000 (12:16 +0100)
committerSimon McVittie <smcv@collabora.com>
Sun, 18 Apr 2021 11:17:00 +0000 (12:17 +0100)
If we fail as a result of `set -x`, It's often not completely obvious
which command failed or how. Use a trap on ERR to show the command that
failed, and its exit status.

Signed-off-by: Simon McVittie <smcv@collabora.com>
tests/libtest.sh

index eda3b921267461f7296a18ff7b5dafeacc8494cb..2e9a99df50aa069e76c45108db1eac5a4a7d4087 100755 (executable)
@@ -46,6 +46,14 @@ run_exit_cmds() {
 }
 trap run_exit_cmds EXIT
 
+report_err () {
+  local exit_status="$?"
+  { { local BASH_XTRACEFD=3; } 2> /dev/null
+  echo "Unexpected nonzero exit status $exit_status while running: $BASH_COMMAND" >&2
+  } 3> /dev/null
+}
+trap report_err ERR
+
 save_core() {
   if [ -e core ]; then
     cp core "$test_srcdir/core"